#if 0
	shc Version 4.0.3, Generic Shell Script Compiler
	GNU GPL Version 3 Md Jahidul Hamid <jahidulhamid@yahoo.com>

	shc -f MacDevCacheCleaner.sh -o MacDevCacheCleaner 
#endif

static  char data [] = 
#define      pswd_z	256
#define      pswd	((&data[14]))
	"\113\166\162\376\033\105\042\342\061\172\176\003\170\120\271\025"
	"\227\150\024\274\007\325\301\200\141\114\003\345\125\211\355\233"
	"\012\330\314\215\136\102\032\151\057\265\024\004\377\041\121\333"
	"\267\342\372\320\102\041\233\253\051\272\334\371\004\051\206\230"
	"\000\003\016\173\130\207\057\240\062\156\312\205\360\017\014\001"
	"\075\023\217\044\323\033\200\114\246\370\322\176\107\125\160\176"
	"\050\100\047\250\004\217\050\116\071\142\116\112\317\074\300\136"
	"\214\007\052\322\157\315\252\211\337\004\012\262\035\244\002\001"
	"\227\140\015\145\225\100\354\044\066\021\046\065\204\151\122\162"
	"\243\201\153\114\271\250\026\140\076\146\034\302\205\161\215\302"
	"\366\163\236\225\233\332\100\110\210\250\246\326\237\316\354\350"
	"\376\365\225\125\172\154\330\254\154\346\113\107\373\102\161\101"
	"\051\251\250\154\142\011\350\075\316\007\012\326\122\150\026\076"
	"\375\124\156\214\067\153\132\014\314\035\365\000\153\325\205\232"
	"\131\222\224\173\273\207\206\312\232\261\231\144\250\105\016\363"
	"\215\146\236\044\255\012\213\336\167\313\212\212\267\221\213\300"
	"\363\216\003\201\050\007\275\132\074\040\336\145\260\217\117\170"
	"\170\055\341\205\173\205\310"
#define      msg1_z	65
#define      msg1	((&data[293]))
	"\353\243\320\051\313\157\077\173\351\266\267\332\201\204\062\204"
	"\276\114\055\372\103\237\371\246\102\246\072\157\223\161\214\236"
	"\331\365\375\027\234\133\045\223\171\114\152\271\165\171\060\335"
	"\013\254\157\043\064\344\166\144\200\042\313\145\243\027\152\030"
	"\046\240\104\110\036\222\173\300\157\162\360\051\260\313\060\223"
	"\177\306\141\016\237\310\145\205\324\136\224"
#define      chk2_z	19
#define      chk2	((&data[370]))
	"\226\367\036\351\131\122\075\253\156\046\272\163\210\131\213\256"
	"\355\121\172\307\337\156\351"
#define      tst2_z	19
#define      tst2	((&data[397]))
	"\267\275\015\202\154\073\370\206\252\333\213\135\225\244\346\101"
	"\126\253\112\124\204\306\245\010\050\163"
#define      chk1_z	22
#define      chk1	((&data[423]))
	"\347\130\236\161\127\375\105\176\307\304\364\052\246\133\115\034"
	"\345\246\212\220\114\277\035\346\307\205\221"
#define      date_z	1
#define      date	((&data[446]))
	"\334"
#define      xecc_z	15
#define      xecc	((&data[448]))
	"\335\341\336\144\111\132\056\342\172\307\142\223\155\211\322\371"
	"\155\242"
#define      tst1_z	22
#define      tst1	((&data[468]))
	"\305\145\035\175\125\001\363\267\016\167\046\055\076\020\365\043"
	"\276\330\066\350\251\365\065\024\032\147\340\165\375"
#define      shll_z	10
#define      shll	((&data[494]))
	"\170\076\172\331\322\213\223\356\226\020\031"
#define      inlo_z	3
#define      inlo	((&data[505]))
	"\153\144\032"
#define      lsto_z	1
#define      lsto	((&data[508]))
	"\167"
#define      msg2_z	19
#define      msg2	((&data[511]))
	"\146\231\157\253\130\244\132\102\033\067\346\260\350\153\106\223"
	"\224\326\016\275\122\325"
#define      rlax_z	1
#define      rlax	((&data[531]))
	"\300"
#define      opts_z	1
#define      opts	((&data[532]))
	"\243"
#define      text_z	5389
#define      text	((&data[1255]))
	"\114\145\057\320\114\072\115\374\163\012\225\033\053\004\352\245"
	"\042\055\171\207\244\122\352\156\356\173\035\051\057\102\136\214"
	"\217\212\112\260\021\100\261\010\054\065\266\104\202\132\351\170"
	"\315\174\055\241\366\253\344\230\364\051\177\155\071\274\335\021"
	"\043\136\010\274\254\051\120\155\363\370\354\116\235\103\164\336"
	"\160\203\072\114\116\060\016\320\230\077\063\304\141\223\270\044"
	"\324\214\372\060\145\056\020\073\111\003\350\213\152\045\260\022"
	"\342\035\002\303\100\177\121\172\054\031\341\273\117\126\272\170"
	"\343\256\044\356\076\215\165\051\134\053\021\212\263\234\366\275"
	"\177\002\163\044\204\137\321\332\201\250\162\112\317\075\224\313"
	"\107\152\314\153\203\201\332\207\003\310\077\207\316\014\260\300"
	"\032\330\001\175\374\314\235\076\176\200\346\105\147\300\320\273"
	"\260\066\164\132\332\316\246\127\025\316\176\371\344\145\371\375"
	"\176\104\171\073\307\021\136\025\137\365\370\026\145\075\242\043"
	"\314\065\011\253\363\305\234\027\124\254\032\067\045\370\204\211"
	"\230\354\172\141\257\372\316\105\200\202\325\155\122\144\141\343"
	"\140\101\215\301\124\355\320\171\107\346\351\203\215\212\352\150"
	"\100\331\246\111\172\360\160\140\256\205\154\072\007\307\067\070"
	"\314\337\133\356\112\037\156\360\170\353\042\071\201\355\137\375"
	"\315\323\272\324\326\200\137\053\264\217\124\326\247\234\363\146"
	"\044\115\321\340\114\070\250\005\257\072\067\376\070\134\222\030"
	"\154\374\334\302\202\330\303\145\243\060\035\173\314\171\017\005"
	"\300\103\345\337\151\313\232\327\133\140\334\122\235\002\170\071"
	"\133\243\202\253\161\006\000\333\311\352\074\050\113\004\177\126"
	"\312\003\233\245\211\342\370\201\211\147\030\211\172\317\063\251"
	"\213\245\052\222\035\120\150\234\013\005\226\004\345\013\254\313"
	"\212\246\322\254\104\023\250\275\226\342\115\005\344\025\065\375"
	"\046\260\321\337\173\043\365\374\277\257\067\207\167\040\230\075"
	"\113\076\303\224\216\106\365\206\205\165\021\053\371\127\116\266"
	"\117\032\325\234\001\152\111\212\356\376\150\366\142\014\071\217"
	"\147\206\354\300\042\357\164\257\341\221\274\102\245\277\077\046"
	"\303\356\144\052\224\262\127\166\245\211\370\246\373\075\103\321"
	"\035\101\050\353\242\365\027\261\216\076\127\050\255\001\073\233"
	"\343\321\300\212\031\116\204\244\135\240\047\057\316\220\171\271"
	"\370\226\272\220\334\144\331\051\272\060\021\156\156\167\212\206"
	"\265\102\222\254\352\227\000\356\367\134\246\017\143\275\106\067"
	"\022\055\226\215\124\377\151\137\330\032\227\373\374\146\161\215"
	"\136\324\140\160\135\007\141\341\000\175\213\022\354\143\172\347"
	"\036\246\101\210\272\247\076\157\234\105\030\240\360\170\235\323"
	"\073\141\142\314\154\106\301\000\122\356\367\130\247\240\050\076"
	"\374\121\301\165\223\250\165\224\161\021\174\101\100\333\373\116"
	"\142\146\207\074\066\046\365\323\240\176\101\154\064\162\231\342"
	"\375\207\261\245\000\167\056\254\206\221\063\170\165\050\146\034"
	"\321\264\002\166\376\056\101\367\374\032\064\232\006\237\004\174"
	"\174\234\171\224\037\115\167\173\040\265\232\171\341\273\100\207"
	"\304\231\127\377\353\011\234\363\005\047\352\121\103\044\121\364"
	"\176\022\035\063\013\320\354\271\053\243\160\100\126\134\225\203"
	"\263\137\011\237\143\146\173\204\270\247\172\201\056\044\301\214"
	"\063\160\176\072\346\275\343\173\050\143\234\313\141\264\341\103"
	"\040\260\011\024\154\105\015\350\016\162\167\077\303\173\100\375"
	"\343\277\311\344\203\073\155\163\045\334\034\327\175\333\147\026"
	"\243\137\246\013\347\260\262\322\314\362\264\200\056\064\111\332"
	"\346\124\257\043\250\021\140\317\300\073\107\027\226\176\226\016"
	"\137\054\163\274\216\321\026\311\240\277\332\254\174\007\370\170"
	"\125\244\345\153\033\263\041\201\231\307\335\102\366\136\207\023"
	"\377\322\066\311\322\250\036\314\310\021\021\366\074\363\137\002"
	"\055\172\034\204\327\321\253\360\143\325\362\022\057\057\332\370"
	"\205\372\225\001\345\123\255\214\364\157\311\074\244\124\161\100"
	"\321\170\331\366\374\324\201\255\021\254\042\007\202\203\026\103"
	"\144\027\270\077\351\351\237\116\011\315\013\337\121\064\120\266"
	"\160\166\250\065\157\373\243\270\163\156\161\117\305\275\235\132"
	"\361\212\362\110\044\136\347\372\323\155\335\257\317\224\136\012"
	"\320\063\007\325\102\265\273\220\265\011\155\052\072\231\375\041"
	"\266\144\205\115\051\276\367\022\230\121\104\251\074\077\262\305"
	"\032\003\314\021\277\034\337\227\154\063\254\356\127\341\277\335"
	"\201\074\255\202\060\270\316\172\151\145\370\336\042\336\017\112"
	"\273\345\307\215\200\307\337\127\054\104\021\312\377\070\042\125"
	"\375\221\130\001\315\277\364\036\133\145\260\033\100\165\064\001"
	"\004\133\153\247\020\136\123\050\324\147\271\341\071\152\226\002"
	"\302\311\072\134\251\006\354\263\205\071\222\105\204\032\221\012"
	"\254\156\361\256\145\237\141\337\111\106\013\302\107\373\305\065"
	"\221\215\075\104\036\070\023\177\336\312\277\147\237\374\364\320"
	"\176\044\224\055\367\345\301\127\242\111\252\225\314\175\153\040"
	"\062\245\140\206\060\057\235\156\246\205\346\323\372\106\375\013"
	"\315\010\026\161\052\342\232\301\063\024\070\133\301\003\041\162"
	"\307\274\327\052\145\056\315\374\104\322\216\371\271\217\333\032"
	"\321\276\105\212\002\147\331\065\305\220\164\234\106\314\032\054"
	"\304\137\015\210\374\032\257\015\030\364\346\005\142\242\146\062"
	"\045\112\216\371\246\332\266\120\127\065\070\025\012\236\110\232"
	"\120\313\060\340\327\255\131\374\220\065\225\357\277\053\212\024"
	"\342\264\116\263\137\050\324\262\363\022\314\213\132\076\357\032"
	"\226\074\125\346\023\225\163\250\111\344\026\074\071\150\335\004"
	"\216\272\120\161\261\263\112\030\047\001\320\204\015\226\177\242"
	"\004\272\367\344\135\176\141\162\377\175\016\033\171\364\350\250"
	"\362\210\220\012\171\063\330\212\221\344\022\312\160\345\032\351"
	"\221\263\152\063\364\372\266\117\131\002\052\151\361\146\272\347"
	"\267\337\351\210\137\267\033\262\332\027\036\374\073\155\146\074"
	"\164\316\110\057\176\272\017\100\330\004\274\337\307\302\041\246"
	"\142\232\201\312\031\306\162\006\310\133\057\341\157\204\130\327"
	"\140\021\300\027\277\074\105\264\244\117\204\157\165\243\253\131"
	"\214\131\341\145\171\212\250\211\305\147\347\312\023\040\045\222"
	"\232\351\027\235\000\165\356\032\317\265\057\036\017\367\225\325"
	"\223\131\265\246\140\320\130\110\076\357\205\156\025\357\046\122"
	"\311\000\161\004\131\151\125\240\113\230\020\365\116\157\010\370"
	"\061\203\104\172\346\033\014\241\106\361\066\227\077\173\201\111"
	"\057\152\311\142\377\175\355\336\031\345\300\025\074\305\170\316"
	"\210\172\267\357\047\360\071\342\261\004\230\160\253\042\236\255"
	"\335\325\332\175\232\301\032\336\074\065\374\243\034\045\357\157"
	"\157\163\200\056\126\062\260\306\105\177\373\242\141\002\040\342"
	"\143\011\145\102\320\125\273\374\275\153\227\350\200\220\064\073"
	"\276\174\076\243\176\055\053\177\107\116\111\324\231\315\207\234"
	"\063\300\326\062\124\101\272\326\376\302\255\215\045\234\320\104"
	"\301\002\054\211\215\301\014\314\376\353\256\000\037\216\172\243"
	"\151\124\243\242\233\011\312\046\344\342\222\353\263\017\206\216"
	"\017\121\220\175\364\343\343\073\223\074\002\227\255\152\026\130"
	"\371\274\261\217\077\106\213\143\154\043\073\175\302\010\006\016"
	"\341\020\270\314\175\152\270\106\244\264\377\300\372\125\151\375"
	"\205\237\261\044\314\146\360\161\116\207\267\012\025\157\317\224"
	"\315\205\051\177\353\205\320\116\313\073\316\216\261\005\102\323"
	"\223\251\207\344\376\352\261\357\247\355\354\000\230\325\105\366"
	"\062\011\251\222\064\034\044\040\223\216\233\266\125\250\366\121"
	"\144\247\243\011\363\163\004\175\324\242\372\274\040\171\175\007"
	"\234\170\175\007\272\306\053\116\040\120\340\315\170\222\066\207"
	"\200\240\123\141\233\165\323\173\023\315\036\013\017\274\147\045"
	"\035\107\040\036\122\220\160\133\150\157\025\146\204\266\272\012"
	"\117\314\367\175\362\306\021\071\075\216\254\337\312\152\165\027"
	"\014\270\173\117\236\262\344\215\133\014\010\110\302\134\024\360"
	"\155\171\174\361\336\303\331\051\031\131\240\370\307\234\345\314"
	"\000\245\320\205\207\160\066\150\337\361\377\226\070\310\327\035"
	"\173\212\205\370\045\016\000\020\030\126\332\331\113\263\155\040"
	"\325\016\300\172\214\035\164\332\311\303\020\004\324\236\002\062"
	"\223\067\341\202\134\215\134\256\031\221\246\216\172\367\372\277"
	"\131\206\217\135\044\300\360\134\216\340\034\141\025\267\361\235"
	"\153\067\134\155\011\256\014\346\251\331\334\105\170\120\011\033"
	"\274\245\326\372\162\113\165\265\103\306\002\065\133\273\326\245"
	"\255\270\013\300\215\347\312\377\210\332\310\030\277\142\353\060"
	"\206\352\240\117\132\351\306\010\021\356\330\043\155\323\233\042"
	"\054\131\363\366\211\320\214\214\242\005\203\052\371\152\104\126"
	"\120\017\125\375\213\124\022\221\327\102\122\263\115\061\237\022"
	"\116\131\336\036\200\115\047\134\111\052\150\152\322\000\352\156"
	"\113\130\131\376\241\306\133\250\327\153\221\273\152\360\037\157"
	"\321\017\040\310\012\100\201\363\230\061\272\014\055\006\224\314"
	"\245\240\063\000\216\223\057\145\244\263\225\336\113\235\224\156"
	"\153\213\372\031\254\230\236\106\303\224\346\202\063\046\136\273"
	"\170\212\216\003\224\223\243\130\333\335\013\022\175\071\336\302"
	"\231\371\050\066\204\104\330\342\004\350\054\117\211\067\131\150"
	"\240\337\137\123\043\232\263\363\077\012\042\152\351\317\041\161"
	"\230\116\350\311\005\167\362\066\303\272\034\116\264\133\252\004"
	"\120\115\075\112\316\126\322\006\374\163\320\101\045\371\152\112"
	"\331\253\341\100\335\205\054\160\106\107\013\321\122\021\356\101"
	"\066\057\315\320\072\263\024\206\136\212\100\326\170\156\272\204"
	"\305\347\332\064\016\313\311\157\145\214\303\133\333\346\120\066"
	"\246\301\342\163\006\350\106\321\241\204\365\063\316\136\055\042"
	"\053\314\007\162\106\347\274\030\104\121\371\164\162\244\050\177"
	"\324\261\327\243\362\010\366\344\236\210\332\324\124\127\201\271"
	"\071\041\015\046\120\216\003\344\341\050\117\336\207\041\353\146"
	"\107\342\067\046\111\145\376\077\127\241\024\220\254\367\264\374"
	"\251\060\076\367\275\123\322\154\273\162\013\221\353\251\151\363"
	"\030\351\104\061\247\001\137\267\273\342\375\314\124\346\353\316"
	"\022\206\126\041\237\241\331\051\363\132\224\377\346\060\216\312"
	"\042\070\313\073\116\236\157\133\360\156\277\374\056\047\206\242"
	"\354\171\127\300\176\224\332\316\367\231\366\367\125\224\260\156"
	"\351\271\175\332\262\303\233\316\315\204\220\305\314\000\265\027"
	"\147\010\206\235\151\131\204\221\001\066\047\324\332\011\271\203"
	"\013\367\177\104\326\320\056\252\101\177\347\253\114\265\334\006"
	"\144\320\201\021\376\211\006\300\272\237\251\106\343\217\260\235"
	"\251\210\157\070\065\147\270\114\336\123\263\315\136\243\045\330"
	"\240\176\350\073\361\374\200\366\012\041\344\201\064\211\005\360"
	"\335\052\146\260\244\026\043\277\003\047\052\032\136\247\020\027"
	"\360\253\231\217\225\351\037\154\016\062\177\225\106\364\337\345"
	"\044\076\067\236\136\150\346\244\154\173\271\327\102\320\325\163"
	"\115\141\376\267\250\153\015\340\247\173\061\117\354\112\051\274"
	"\152\276\206\223\222\014\245\206\020\010\122\130\132\303\077\313"
	"\130\237\037\065\104\274\054\342\076\067\030\224\153\324\111\024"
	"\074\123\345\013\200\120\160\113\214\016\035\166\276\351\174\100"
	"\216\222\143\273\273\245\221\102\252\234\032\170\212\041\025\174"
	"\235\031\215\065\371\011\147\350\106\135\252\162\171\117\051\274"
	"\141\213\131\026\153\122\310\075\247\031\106\374\244\053\132\140"
	"\117\106\115\270\331\344\111\225\174\212\275\014\303\010\226\271"
	"\241\115\166\217\365\310\060\353\222\262\202\243\277\322\202\263"
	"\216\260\343\056\325\232\311\343\115\047\101\370\346\252\010\374"
	"\332\142\341\210\177\042\343\335\175\335\015\050\145\031\036\261"
	"\355\213\047\260\176\166\045\124\315\060\042\277\164\055\076\160"
	"\122\175\126\121\265\030\033\003\133\345\005\334\275\103\350\325"
	"\312\113\212\032\374\370\103\340\053\055\262\346\060\163\256\207"
	"\207\275\114\122\161\146\326\111\046\145\222\337\256\104\102\331"
	"\023\105\122\127\244\002\243\306\125\046\254\154\307\213\222\166"
	"\371\206\262\306\135\052\346\221\356\116\274\106\001\004\010\266"
	"\351\203\064\017\111\122\313\076\337\057\142\030\156\045\365\250"
	"\026\231\364\136\315\133\264\322\071\360\130\331\143\225\353\337"
	"\234\020\124\070\270\237\313\044\064\122\341\231\254\271\021\001"
	"\060\200\311\173\141\321\100\174\233\223\303\001\214\010\123\270"
	"\072\101\046\364\363\171\060\300\367\330\102\313\254\343\336\021"
	"\147\261\071\312\046\055\106\333\064\033\263\251\266\063\357\211"
	"\120\170\341\104\321\036\235\335\251\223\076\074\107\074\331\231"
	"\005\121\121\166\046\063\156\113\262\312\070\377\235\141\146\166"
	"\375\204\313\157\363\316\166\050\220\363\207\053\327\014\055\315"
	"\326\066\241\231\022\160\001\346\202\137\026\355\272\124\166\143"
	"\063\000\171\221\347\025\324\202\373\123\054\165\236\052\206\337"
	"\101\336\314\363\346\323\101\270\324\207\275\144\263\150\213\310"
	"\263\233\357\175\153\166\120\354\222\360\107\141\325\036\035\064"
	"\205\074\303\034\303\376\312\003\274\012\030\114\355\305\220\016"
	"\236\243\164\343\312\127\340\073\123\106\013\355\061\057\300\057"
	"\111\032\026\354\102\234\213\345\361\300\373\215\165\027\055\060"
	"\220\270\012\337\277\225\022\353\224\351\151\204\371\042\341\074"
	"\013\163\262\341\234\323\213\020\366\274\211\066\351\076\337\214"
	"\177\310\375\075\030\104\363\263\251\335\136\100\060\054\122\310"
	"\320\151\203\240\237\301\345\235\370\325\340\125\363\314\007\016"
	"\257\070\317\026\213\153\301\222\026\235\364\036\303\272\147\061"
	"\073\355\276\171\224\265\147\205\172\340\026\207\262\132\133\344"
	"\144\055\033\066\203\252\201\141\207\071\060\153\130\004\226\170"
	"\246\102\102\162\143\244\165\033\355\214\303\202\306\023\056\373"
	"\325\070\313\115\231\235\100\351\367\074\165\335\130\230\315\146"
	"\334\327\263\071\310\360\060\272\331\340\370\066\200\043\153\125"
	"\217\234\374\010\363\262\061\017\353\270\273\135\160\026\076\136"
	"\122\223\301\313\130\065\127\063\255\360\276\215\035\005\156\126"
	"\315\320\230\146\172\233\247\157\226\143\072\367\072\347\246\211"
	"\060\374\342\047\220\374\010\314\276\106\242\002\012\271\246\144"
	"\024\102\004\066\226\313\054\214\306\132\132\144\242\060\052\113"
	"\244\135\153\104\102\374\350\204\114\207\340\264\113\053\217\260"
	"\121\104\215\320\372\253\200\040\116\130\270\022\366\211\266\323"
	"\157\301\265\225\217\013\270\346\173\331\374\015\224\144\273\343"
	"\221\301\327\227\320\202\347\215\300\032\043\216\243\134\265\063"
	"\151\335\005\050\161\144\007\153\251\264\126\265\335\027\045\162"
	"\373\166\377\307\315\202\222\166\277\374\145\126\245\321\050\225"
	"\254\135\276\247\107\026\241\067\040\345\214\260\213\350\136\202"
	"\211\246\246\332\166\315\264\364\355\377\060\016\323\151\247\241"
	"\375\204\263\014\011\330\053\073\232\352\310\321\006\152\141\062"
	"\314\051\276\133\062\271\207\306\227\034\160\237\302\262\007\314"
	"\176\203\007\003\031\011\224\373\320\255\131\115\022\230\207\331"
	"\340\123\170\272\215\035\337\270\106\273\110\356\061\016\055\060"
	"\032\301\324\272\230\124\330\325\014\276\030\334\123\174\030\135"
	"\013\134\016\332\277\212\366\232\136\125\270\004\351\270\152\355"
	"\020\203\172\145\045\221\354\055\117\162\031\241\256\012\310\022"
	"\350\222\044\103\011\055\003\153\327\300\271\111\344\303\044\166"
	"\156\105\213\232\225\167\033\060\010\060\336\223\127\073\357\157"
	"\247\334\066\122\057\376\303\212\035\041\261\120\244\076\132\170"
	"\177\023\214\150\113\013\242\130\055\167\301\073\026\113\210\304"
	"\153\256\044\073\201\275\340\074\213\101\045\333\347\011\116\043"
	"\114\007\262\311\030\115\254\305\276\162\251\371\034\205\105\016"
	"\152\044\005\365\224\306\104\137\233\152\131\110\016\067\223\111"
	"\357\311\333\357\153\251\257\057\347\131\027\307\323\366\122\243"
	"\130\305\103\205\207\142\305\144\222\135\261\016\002\342\005\170"
	"\041\117\167\165\264\375\205\272\114\031\054\251\130\156\226\272"
	"\011\105\357\143\037\344\072\237\064\076\064\030\127\115\177\274"
	"\062\062\260\205\262\340\333\042\232\075\310\212\013\375\067\203"
	"\273\154\232\257\075\120\343\276\372\112\132\327\034\044\103\047"
	"\014\003\054\375\331\120\077\115\371\256\216\247\164\325\364\304"
	"\101\323\316\153\136\372\001\301\026\265\251\204\227\323\037\107"
	"\234\352\051\212\064\337\343\163\302\027\310\131\133\351\033\232"
	"\220\241\272\275\100\275\360\345\063\146\062\043\365\104\164\143"
	"\111\005\342\073\271\276\120\166\364\110\340\004\077\212\131\125"
	"\053\007\034\046\062\361\373\373\364\216\016\317\161\237\234\335"
	"\275\013\357\020\317\156\030\075\140\341\302\363\360\026\024\006"
	"\354\361\270\121\114\245\023\102\371\064\343\174\353\032\323\166"
	"\377\231\042\261\105\174\101\133\352\361\323\256\310\365\052\136"
	"\304\066\175\165\147\237\273\061\134\217\235\043\265\314\241\106"
	"\060\365\040\112\335\325\153\030\005\345\316\363\263\230\143\106"
	"\034\356\347\002\210\056\271\227\076\057\334\170\372\220\342\332"
	"\325\042\310\324\061\205\346\337\213\326\247\226\017\045\217\031"
	"\250\163\203\300\215\025\171\176\313\132\277\177\361\154\331\077"
	"\156\363\132\127\176\010\100\126\174\366\000\140\140\053\012\107"
	"\265\150\142\301\026\376\001\104\051\246\101\335\011\263\364\153"
	"\215\136\216\010\274\245\341\305\155\154\240\276\155\136\375\130"
	"\043\360\240\016\222\023\146\236\373\323\056\247\254\372\041\201"
	"\273\346\156\056\141\055\206\022\327\314\130\021\310\016\327\335"
	"\074\242\036\264\143\066\301\351\075\164\041\263\221\315\154\167"
	"\004\205\315\247\147\367\101\126\267\203\330\363\174\026\203\002"
	"\066\327\337\214\113\236\267\234\210\030\376\271\176\045\051\341"
	"\075\077\305\015\062\217\325\127\165\077\126\356\233\352\311\206"
	"\265\041\147\043\302\364\311\260\342\314\033\253\065\276\265\050"
	"\120\363\353\000\063\135\021\275\254\131\101\022\336\141\235\055"
	"\364\226\134\310\014\073\367\256\103\256\317\216\166\152\200\245"
	"\121\007\142\044\303\230\020\224\355\316\200\076\003\314\026\215"
	"\270\145\001\163\361\243\101\354\000\303\366\360\224\023\333\016"
	"\203\235\107\123\153\145\232\340\323\232\210\356\034\357\254\063"
	"\147\177\374\131\244\100\074\263\051\061\123\303\321\247\330\163"
	"\303\350\321\102\143\303\140\245\201\374\350\113\220\216\112\102"
	"\241\021\071\251\034\107\065\320\324\176\164\360\051\242\007\140"
	"\346\253\221\042\016\160\354\077\132\243\104\120\366\136\272\330"
	"\367\013\051\150\067\115\022\227\016\353\266\273\010\025\264\130"
	"\203\306\024\350\167\317\075\223\026\066\163\352\066\223\144\363"
	"\162\243\070\032\370\142\065\204\257\243\063\046\354\310\347\360"
	"\157\377\133\266\311\153\122\025\232\111\222\253\121\317\251\026"
	"\105\004\142\162\135\116\013\251\353\260\031\156\057\033\354\372"
	"\060\362\202\160\356\361\150\261\337\262\127\341\023\015\312\344"
	"\013\205\174\327\110\176\142\331\331\203\073\040\056\372\352\110"
	"\070\137\142\173\076\202\167\377\205\066\057\065\040\062\202\336"
	"\242\365\262\351\207\052\141\377\277\004\271\341\017\374\307\020"
	"\223\221\146\375\252\202\273\067\275\305\156\003\135\113\027\115"
	"\032\065\311\331\251\071\007\047\360\140\020\246\206\230\027\231"
	"\344\250\311\161\267\035\146\147\010\201\240\330\067\071\262\060"
	"\263\252\305\367\341\020\041\344\351\277\174\011\061\267\012\126"
	"\176\160\224\271\002\204\246\043\001\123\337\325\203\327\307\261"
	"\244\005\212\157\027\305\336\345\231\021\011\073\136\165\317\305"
	"\125\157\300\336\310\035\302\176\203\270\275\377\030\371\260\363"
	"\135\161\116\161\114\034\244\300\263\067\373\244\176\335\126\032"
	"\212\231\050\256\005\105\125\122\175\165\153\262\274\364\000\342"
	"\154\111\144\324\146\174\356\214\064\262\233\162\036\126\244\000"
	"\033\133\241\342\124\375\053\264\067\223\106\337\346\021\073\333"
	"\337\074\161\036\110\122\074\312\224\105\163\111\016\233\325\310"
	"\161\000\341\350\215\300\351\203\341\227\370\251\321\317\347\321"
	"\360\113\016\275\071\135\335\217\336\174\103\211\170\334\035\146"
	"\256\362\326\214\037\343\225\326\054\014\020\132\040\174\305\263"
	"\333\026\326\327\275\204\265\365\274\206\167\237\167\154\147\076"
	"\247\161\030\022\121\354\333\156\275\130\274\372\207\102\006\246"
	"\320\030\163\167\350\243\000\134\253\034\334\065\055\220\344\234"
	"\165\122\015\334\011\066\204\133\144\110\130\356\352\235\322\137"
	"\147\170\136\055\200\276\211\220\015\213\123\020\274\254\201\102"
	"\270\145\171\042\371\243\113\322\140\102\045\065\010\310\177\235"
	"\123\124\137\121\042\364\117\073\035\053\313\350\345\263\233\023"
	"\335\257\215\041\015\077\047\266\035\042\335\204\066\063\047\100"
	"\000\270\302\006\042\260\023\270\255\200\346\106\364\224\232\167"
	"\316\065\123\301\146\003\170\217\353\347\255\027\355\077\170\012"
	"\353\222\020\324\334\153\273\350\277\015\267\303\165\117\233\201"
	"\100\007\057\023\054\347\343\036\333\011\040\360\265\125\120\017"
	"\054\177\371\060\242\117\371\347\101\325\161\051\357\226\003\121"
	"\243\145\037\335\002\224\146\377\032\160\277\165\234\350\065\266"
	"\227\156\212\375\045\063\126\063\377\272\033\140\231\246\350\105"
	"\157\110\171\363\313\357\311\365\203\036\175\153\004\342\111\157"
	"\155\101\332\246\321\312\047\256\376\251\067\303\045\014\110\044"
	"\317\031\060\034\242\245\164\352\051\050\321\062\205\263\367\047"
	"\057\013\272\320\252\324\356\331\247\063\224\233\366\146\377\054"
	"\003\051\216\024\155\073\216\064\050\272\331\166\231\220\113\002"
	"\062\352\012\006\064\343\071\071\005\005\346\113\334\235\036\321"
	"\244\154\132\210\113\003\214\175\111\161\044\051\376\252\344\366"
	"\054\072\030\303\247\276\332\105\235\136\142\203\150\240\245\320"
	"\116\016\114\103\323\272\240\053\135\021\062\263\071\035\012\212"
	"\147\367\065\042\066\074\121\213\156\364\216\063\123\154\364\326"
	"\273\344\102\320\042\043\003\043\147\172\356\153\226\014\077\120"
	"\257\334\176\270\275\045\355\015\226\276\217\362\027\163\367\362"
	"\226\264\163\333\101\030\104\017\106\250\342\073\251\352\060\345"
	"\277\363\016\351\337\377\113\262\217\165\251\177\365\350\213\012"
	"\005\172\263\242\105\265\007\277\265\017\232\143\021\344\377\013"
	"\005\214\356\023\174\253\075\263\231\000\067\054\171\371\055\211"
	"\274\136\141\312\046\044\327\026\106\374\010\200\323\024\302\241"
	"\124\265\002\173\067\201\377\057\066\054\172\243\126\117\373\323"
	"\176\212\003\162\224\377\101\116\105\141\211\306\266\066\272\005"
	"\347\042\073\072\347\071\373\003\001\217\064\161\274\300\130\127"
	"\337\112\026\104\176\126\230\262\337\305\321\037\122\152\246\216"
	"\143\216\356\211\166\013\271\226\276\123\141\074\367\263\002\243"
	"\126\007\144\303\057\353\240\241\031\226\043\054\212\103\003\306"
	"\206\175\001\236\241\317\054\373\144\147\357\015\224\375\156\113"
	"\147\324\271\127\307\123\214\145\221\240\356\053\351\176\373\126"
	"\244\027\234\062\111\025\226\005\060\237\230\302\026\263\075\352"
	"\171\334\075\053\160\000\207\222\273\022\225\367\342\224\227\203"
	"\114\011\336\200\333\111\065\355\233\011\127\033\227\232\244\211"
	"\342\104\116\351\157\246\331\305\275\111\001\154\266\027\172\267"
	"\237\201\214\156\256\146\114\200\016\262\231\176\161\263\355\310"
	"\332\306\216\255\307\244\246\122\122\174\232\067\205\340\315\252"
	"\001\142\341\151\325\230\344\354\064\342\327\172\316\057\065\064"
	"\117\364\045\163\115\214\135\064\003\101\357\023\342\257\004\015"
	"\224\214\054\247\061\373\251\315\203\247\366\100\304\111\072\357"
	"\237\366\351\002\314\115\356\214\034\325\173\141\265\222\330\036"
	"\046\331\075\377\154\006\355\311\034\072\252\062\134\336\216\351"
	"\000\254\320\107\052\206\224\327\157\262\344\157\114\140\062\046"
	"\245\047\231\265\151\336\054\246\123\225\223\105\326\237\376\200"
	"\070\201\334\076\307\157\061\074\137\314\245\343\230\017\014\344"
	"\061\266\330\262\272\350\244\276\175\022\150\133\316\347\312\324"
	"\175\261\330\135\275\350\242\043\346\143\121\301\314\347\124\113"
	"\270\154\021\157\145\335\136\235\274\231\357\332\011\325\135\144"
	"\260\200\353\061\344\271\127\337\222\135\023\053\377\313\174\277"
	"\342\215\062\155\307\272\041\356\315\371\332\160\364\310\335\146"
	"\340\022\305\254\230\340\006\253\252\261\305\324\065\064\233\130"
	"\156\351\271\131\321\007\044\316\062\022\132\245\151\375\021\130"
	"\232\353\002\012\370\117\144\064\267\006\134\304\303\041\244\243"
	"\023\144\362\055\221\273\367\305\265\031\021\067\013\010\314\212"
	"\140\306\136\167\305\143\002\132\161\063\166\210\103\050\215\261"
	"\117\134\332\267\145\120\172\137\367\221\261\152\202\275\333\250"
	"\254\021\215\302\252\322\173\337\217\115\005\376\216\216\335\335"
	"\340\137\376\305\063\165\376\162\271\230\350\026\312\175\333\005"
	"\073\314\203\176\316\200\321\116\047\106\357\161\076\042\176\302"
	"\035\025\262\045\230\077\163\233\375\237\354\111\362\055\225\060"
	"\227\124\274\230\303\041\324\275\301\154\250\324\157\011\044\070"
	"\100\305\104\313\256\106\124\042\115\371\370\147\342\152\001\313"
	"\256\136\274\320\232\165\352\265\003\005\165\316\302\351\212\306"
	"\145\070\130\072\146\113\065\205\233\132\171\074\101\245\327\367"
	"\260\137\015\076\125\102\251\332\120\171\330\161\064\363\256\152"
	"\135\066\102\206\037\144\347\365\043\150\346\145\124\016\304\371"
	"\376\016\326\065\254\304\342\122\022\317\146\333\211\226\052\343"
	"\062\134\333\033\343\112\054\057\322\306\116\253\333\051\312\262"
	"\175\026\100\114\304\275\141\011\102\165\224\176\242\136\005\045"
	"\011\276\216\107\074\132\054\332\314\145\156\265\203\015\377\003"
	"\313\240\333\274\221\023\167\350\303\071\161\067\136\367\351\127"
	"\106\127\015\356\224\030\315\144\224\364\073\057\021\322\171\163"
	"\035\320\271\075\072\121\160\216\377\164\154\334\061\122\245\317"
	"\116\012\001\154\070\247\146\226\245\100\077\111\236\100\144\107"
	"\204\207\036\314\224\052\132\374\162\064\375\044\317\073\173\020"
	"\331\115\271\006\057\270\370\043\070\023\260\301\067\323\064\376"
	"\264\374\105\042\113\241\266\241\155\324\317\343\366\017\103\322"
	"\330\077\066\353\062\203\076\317\002\270\165\353\075\002\172\074"
	"\141\145\115\304\123\067\314\277\071\154\277\254\172\044\233\330"
	"\363\330\340\262\346\152\074\247\123\327\150\256\127\105\060\075"
	"\323\144\324\161\014\045\202\042\027\066\040\271\315\207\247\146"
	"\153\274\116\300\222\135\003\165\371\123\272\355\237\271\074\050"
	"\317\227\130\162\353\234\241\057\055\175\244\167\233\237\272\206"
	"\267\135\104\322\007\357\244\254\101\022\171\256\217\014\344\044"
	"\046\151\137\176\307\277\045\055\307\203\225\130\013\155\374\223"
	"\104\052\057\020\077\111\224\113\317\022\134\045\113\042\353\325"
	"\241\124\206\010\030\025\036\321\211\072\376\035\144\340\351\132"
	"\105\346\377\312\212\210\171\206\332\266\057\116\306\115\171\103"
	"\115\212\075\314\332\204\000\253\164\226\247\365\314\151\141\152"
	"\341\104\067\111\311\064\237\153\210\301\107\244\335\210\251\163"
	"\254\334\232\316\231\005\030\141\103\010\047\377\110\305\060\341"
	"\353\245\055\373\073\101\041\114\152\304\264\032\153\123\031\314"
	"\000\101\204\176\324\147\240\123\115\255\256\046\061\003\143\336"
	"\051\166\064\320\157\011\104\355\060\054\176\241\343\017\017\247"
	"\343\262\356\125\114\153\351\274\261\105\023\165\354\016\361\011"
	"\071\320\314\243\120\065\276\311\117\021\074\315\141\215\062\362"
	"\157\203\024\122\375\110\016\153\251\216\172\201\144\324\215\011"
	"\046\321\301\332\000\174\367\010\232\231\335\076\144\007\324\271"
	"\240\053\117\205\207\245\236\305\354\262\353\372\050\077\153\243"
	"\365\121\207\052\327\373\150\231\017\121\173\066\135\314\372\143"
	"\306\361\360\072\177\112\343\266\362\120\214\202\066\373\156\225"
	"\356\257\025\315\040\144\155\011\317\012\102\274\160\330\266\232"
	"\362\242\300\311\065\041\105\274\356\337\241\276\224\156\347\331"
	"\133\056\143\053\224\251\157\171\322\374\154\274\111\343\166\227"
	"\352\256\115\251\345\207\307\150\007\203\113\230\357\335\037\011"
	"\272\006\151\314\311\026\075\323\342\121\344\145\251\242\163\150"
	"\165\264\342\132\041\102\144\021\367\076\266\322\127\163\021\063"
	"\003\344\173\151\223\107\225\234\367\060\171\125\011\016\324\046"
	"\270\155\113\232\024\063\225\223\210\121\201\160\112\207\154\225"
	"\265\015\120\234\216\336\133\371\252\033\352\170\326\156\023\161"
	"\126\304\132\063\377\120\206\332\376\052\372\017\117\035\242\214"
	"\356\360\355\273\325\067\232\010\220\144\211\355\370\002\123\231"
	"\030\302\033\300\253\063\212\230\306\115\306\024\262\044\207\013"
	"\032\173\010\357\145\177\264\220"/* End of data[] */;
#define      hide_z	4096
#define SETUID 0	/* Define as 1 to call setuid(0) at start of script */
#define DEBUGEXEC	0	/* Define as 1 to debug execvp calls */
#define TRACEABLE	1	/* Define as 1 to enable ptrace the executable */
#define HARDENING	0	/* Define as 1 to disable ptrace/dump the executable */
#define BUSYBOXON	0	/* Define as 1 to enable work with busybox */

#if HARDENING
static const char * shc_x[] = {
"/*",
" * Copyright 2019 - Intika <intika@librefox.org>",
" * Replace ******** with secret read from fd 21",
" * Also change arguments location of sub commands (sh script commands)",
" * gcc -Wall -fpic -shared -o shc_secret.so shc_secret.c -ldl",
" */",
"",
"#define _GNU_SOURCE /* needed to get RTLD_NEXT defined in dlfcn.h */",
"#define PLACEHOLDER \"********\"",
"#include <dlfcn.h>",
"#include <stdlib.h>",
"#include <string.h>",
"#include <unistd.h>",
"#include <stdio.h>",
"#include <signal.h>",
"",
"static char secret[128000]; //max size",
"typedef int (*pfi)(int, char **, char **);",
"static pfi real_main;",
"",
"// copy argv to new location",
"char **copyargs(int argc, char** argv){",
"    char **newargv = malloc((argc+1)*sizeof(*argv));",
"    char *from,*to;",
"    int i,len;",
"",
"    for(i = 0; i<argc; i++){",
"        from = argv[i];",
"        len = strlen(from)+1;",
"        to = malloc(len);",
"        memcpy(to,from,len);",
"        // zap old argv space",
"        memset(from,'\\0',len);",
"        newargv[i] = to;",
"        argv[i] = 0;",
"    }",
"    newargv[argc] = 0;",
"    return newargv;",
"}",
"",
"static int mymain(int argc, char** argv, char** env) {",
"    //fprintf(stderr, \"Inject main argc = %d\\n\", argc);",
"    return real_main(argc, copyargs(argc,argv), env);",
"}",
"",
"int __libc_start_main(int (*main) (int, char**, char**),",
"                      int argc,",
"                      char **argv,",
"                      void (*init) (void),",
"                      void (*fini)(void),",
"                      void (*rtld_fini)(void),",
"                      void (*stack_end)){",
"    static int (*real___libc_start_main)() = NULL;",
"    int n;",
"",
"    if (!real___libc_start_main) {",
"        real___libc_start_main = dlsym(RTLD_NEXT, \"__libc_start_main\");",
"        if (!real___libc_start_main) abort();",
"    }",
"",
"    n = read(21, secret, sizeof(secret));",
"    if (n > 0) {",
"      int i;",
"",
"    if (secret[n - 1] == '\\n') secret[--n] = '\\0';",
"    for (i = 1; i < argc; i++)",
"        if (strcmp(argv[i], PLACEHOLDER) == 0)",
"          argv[i] = secret;",
"    }",
"",
"    real_main = main;",
"",
"    return real___libc_start_main(mymain, argc, argv, init, fini, rtld_fini, stack_end);",
"}",
"",
0};
#endif /* HARDENING */

/* rtc.c */

#include <sys/stat.h>
#include <sys/types.h>

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

/* 'Alleged RC4' */

static unsigned char stte[256], indx, jndx, kndx;

/*
 * Reset arc4 stte. 
 */
void stte_0(void)
{
	indx = jndx = kndx = 0;
	do {
		stte[indx] = indx;
	} while (++indx);
}

/*
 * Set key. Can be used more than once. 
 */
void key(void * str, int len)
{
	unsigned char tmp, * ptr = (unsigned char *)str;
	while (len > 0) {
		do {
			tmp = stte[indx];
			kndx += tmp;
			kndx += ptr[(int)indx % len];
			stte[indx] = stte[kndx];
			stte[kndx] = tmp;
		} while (++indx);
		ptr += 256;
		len -= 256;
	}
}

/*
 * Crypt data. 
 */
void arc4(void * str, int len)
{
	unsigned char tmp, * ptr = (unsigned char *)str;
	while (len > 0) {
		indx++;
		tmp = stte[indx];
		jndx += tmp;
		stte[indx] = stte[jndx];
		stte[jndx] = tmp;
		tmp += stte[indx];
		*ptr ^= stte[tmp];
		ptr++;
		len--;
	}
}

/* End of ARC4 */

#if HARDENING

#include <sys/ptrace.h>
#include <sys/wait.h>
#include <signal.h>
#include <sys/prctl.h>
#define PR_SET_PTRACER 0x59616d61

/* Seccomp Sandboxing Init */
#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>

#include <sys/types.h>
#include <sys/prctl.h>
#include <sys/syscall.h>
#include <sys/socket.h>

#include <linux/filter.h>
#include <linux/seccomp.h>
#include <linux/audit.h>

#define ArchField offsetof(struct seccomp_data, arch)

#define Allow(syscall) \
    BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, SYS_##syscall, 0, 1), \
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ALLOW)

struct sock_filter filter[] = {
    /* validate arch */
    BPF_STMT(BPF_LD+BPF_W+BPF_ABS, ArchField),
    BPF_JUMP( BPF_JMP+BPF_JEQ+BPF_K, AUDIT_ARCH_X86_64, 1, 0),
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),

    /* load syscall */
    BPF_STMT(BPF_LD+BPF_W+BPF_ABS, offsetof(struct seccomp_data, nr)),

    /* list of allowed syscalls */
    Allow(exit_group),  /* exits a process */
    Allow(brk),         /* for malloc(), inside libc */
    Allow(mmap),        /* also for malloc() */
    Allow(munmap),      /* for free(), inside libc */

    /* and if we don't match above, die */
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),
};
struct sock_fprog filterprog = {
    .len = sizeof(filter)/sizeof(filter[0]),
    .filter = filter
};

/* Seccomp Sandboxing - Set up the restricted environment */
void seccomp_hardening() {
    if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) {
        perror("Could not start seccomp:");
        exit(1);
    }
    if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &filterprog) == -1) {
        perror("Could not start seccomp:");
        exit(1);
    }
} 
/* End Seccomp Sandboxing Init */

void shc_x_file() {
    FILE *fp;
    int line = 0;

    if ((fp = fopen("/tmp/shc_x.c", "w")) == NULL ) {exit(1); exit(1);}
    for (line = 0; shc_x[line]; line++)	fprintf(fp, "%s\n", shc_x[line]);
    fflush(fp);fclose(fp);
}

int make() {
	char * cc, * cflags, * ldflags;
    char cmd[4096];

	cc = getenv("CC");
	if (!cc) cc = "cc";

	sprintf(cmd, "%s %s -o %s %s", cc, "-Wall -fpic -shared", "/tmp/shc_x.so", "/tmp/shc_x.c -ldl");
	if (system(cmd)) {remove("/tmp/shc_x.c"); return -1;}
	remove("/tmp/shc_x.c"); return 0;
}

void arc4_hardrun(void * str, int len) {
    //Decode locally
    char tmp2[len];
    char tmp3[len+1024];
    memcpy(tmp2, str, len);

	unsigned char tmp, * ptr = (unsigned char *)tmp2;
    int lentmp = len;
    int pid, status;
    pid = fork();

    shc_x_file();
    if (make()) {exit(1);}

    setenv("LD_PRELOAD","/tmp/shc_x.so",1);

    if(pid==0) {

        //Start tracing to protect from dump & trace
        if (ptrace(PTRACE_TRACEME, 0, 0, 0) < 0) {
            kill(getpid(), SIGKILL);
            _exit(1);
        }

        //Decode Bash
        while (len > 0) {
            indx++;
            tmp = stte[indx];
            jndx += tmp;
            stte[indx] = stte[jndx];
            stte[jndx] = tmp;
            tmp += stte[indx];
            *ptr ^= stte[tmp];
            ptr++;
            len--;
        }

        //Do the magic
        sprintf(tmp3, "%s %s", "'********' 21<<<", tmp2);

        //Exec bash script //fork execl with 'sh -c'
        system(tmp2);

        //Empty script variable
        memcpy(tmp2, str, lentmp);

        //Clean temp
        remove("/tmp/shc_x.so");

        //Sinal to detach ptrace
        ptrace(PTRACE_DETACH, 0, 0, 0);
        exit(0);
    }
    else {wait(&status);}

    /* Seccomp Sandboxing - Start */
    seccomp_hardening();

    exit(0);
}
#endif /* HARDENING */

/*
 * Key with file invariants. 
 */
int key_with_file(char * file)
{
	struct stat statf[1];
	struct stat control[1];

	if (stat(file, statf) < 0)
		return -1;

	/* Turn on stable fields */
	memset(control, 0, sizeof(control));
	control->st_ino = statf->st_ino;
	control->st_dev = statf->st_dev;
	control->st_rdev = statf->st_rdev;
	control->st_uid = statf->st_uid;
	control->st_gid = statf->st_gid;
	control->st_size = statf->st_size;
	control->st_mtime = statf->st_mtime;
	control->st_ctime = statf->st_ctime;
	key(control, sizeof(control));
	return 0;
}

#if DEBUGEXEC
void debugexec(char * sh11, int argc, char ** argv)
{
	int i;
	fprintf(stderr, "shll=%s\n", sh11 ? sh11 : "<null>");
	fprintf(stderr, "argc=%d\n", argc);
	if (!argv) {
		fprintf(stderr, "argv=<null>\n");
	} else { 
		for (i = 0; i <= argc ; i++)
			fprintf(stderr, "argv[%d]=%.60s\n", i, argv[i] ? argv[i] : "<null>");
	}
}
#endif /* DEBUGEXEC */

void rmarg(char ** argv, char * arg)
{
	for (; argv && *argv && *argv != arg; argv++);
	for (; argv && *argv; argv++)
		*argv = argv[1];
}

void chkenv_end(void);

int chkenv(int argc)
{
	char buff[512];
	unsigned long mask, m;
	int l, a, c;
	char * string;
	extern char ** environ;

	mask = (unsigned long)getpid();
	stte_0();
	 key(&chkenv, (void*)&chkenv_end - (void*)&chkenv);
	 key(&data, sizeof(data));
	 key(&mask, sizeof(mask));
	arc4(&mask, sizeof(mask));
	sprintf(buff, "x%lx", mask);
	string = getenv(buff);
#if DEBUGEXEC
	fprintf(stderr, "getenv(%s)=%s\n", buff, string ? string : "<null>");
#endif
	l = strlen(buff);
	if (!string) {
		/* 1st */
		sprintf(&buff[l], "=%lu %d", mask, argc);
		putenv(strdup(buff));
		return 0;
	}
	c = sscanf(string, "%lu %d%c", &m, &a, buff);
	if (c == 2 && m == mask) {
		/* 3rd */
		rmarg(environ, &string[-l - 1]);
		return 1 + (argc - a);
	}
	return -1;
}

void chkenv_end(void){}

#if HARDENING

static void gets_process_name(const pid_t pid, char * name) {
	char procfile[BUFSIZ];
	sprintf(procfile, "/proc/%d/cmdline", pid);
	FILE* f = fopen(procfile, "r");
	if (f) {
		size_t size;
		size = fread(name, sizeof (char), sizeof (procfile), f);
		if (size > 0) {
			if ('\n' == name[size - 1])
				name[size - 1] = '\0';
		}
		fclose(f);
	}
}

void hardening() {
    prctl(PR_SET_DUMPABLE, 0);
    prctl(PR_SET_PTRACER, -1);

    int pid = getppid();
    char name[256] = {0};
    gets_process_name(pid, name);

    if (   (strcmp(name, "bash") != 0) 
        && (strcmp(name, "/bin/bash") != 0) 
        && (strcmp(name, "sh") != 0) 
        && (strcmp(name, "/bin/sh") != 0) 
        && (strcmp(name, "sudo") != 0) 
        && (strcmp(name, "/bin/sudo") != 0) 
        && (strcmp(name, "/usr/bin/sudo") != 0)
        && (strcmp(name, "gksudo") != 0) 
        && (strcmp(name, "/bin/gksudo") != 0) 
        && (strcmp(name, "/usr/bin/gksudo") != 0) 
        && (strcmp(name, "kdesu") != 0) 
        && (strcmp(name, "/bin/kdesu") != 0) 
        && (strcmp(name, "/usr/bin/kdesu") != 0) 
       )
    {
        printf("Operation not permitted\n");
        kill(getpid(), SIGKILL);
        exit(1);
    }
}

#endif /* HARDENING */

#if !TRACEABLE

#define _LINUX_SOURCE_COMPAT
#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>

#if !defined(PT_ATTACHEXC) /* New replacement for PT_ATTACH */
   #if !defined(PTRACE_ATTACH) && defined(PT_ATTACH)
       #define PT_ATTACHEXC	PT_ATTACH
   #elif defined(PTRACE_ATTACH)
       #define PT_ATTACHEXC PTRACE_ATTACH
   #endif
#endif

void untraceable(char * argv0)
{
	char proc[80];
	int pid, mine;

	switch(pid = fork()) {
	case  0:
		pid = getppid();
		/* For problematic SunOS ptrace */
#if defined(__FreeBSD__)
		sprintf(proc, "/proc/%d/mem", (int)pid);
#else
		sprintf(proc, "/proc/%d/as",  (int)pid);
#endif
		close(0);
		mine = !open(proc, O_RDWR|O_EXCL);
		if (!mine && errno != EBUSY)
			mine = !ptrace(PT_ATTACHEXC, pid, 0, 0);
		if (mine) {
			kill(pid, SIGCONT);
		} else {
			perror(argv0);
			kill(pid, SIGKILL);
		}
		_exit(mine);
	case -1:
		break;
	default:
		if (pid == waitpid(pid, 0, 0))
			return;
	}
	perror(argv0);
	_exit(1);
}
#endif /* !TRACEABLE */

char * xsh(int argc, char ** argv)
{
	char * scrpt;
	int ret, i, j;
	char ** varg;
	char * me = argv[0];
	if (me == NULL) { me = getenv("_"); }
	if (me == 0) { fprintf(stderr, "E: neither argv[0] nor $_ works."); exit(1); }

	ret = chkenv(argc);
	stte_0();
	 key(pswd, pswd_z);
	arc4(msg1, msg1_z);
	arc4(date, date_z);
	if (date[0] && (atoll(date)<time(NULL)))
		return msg1;
	arc4(shll, shll_z);
	arc4(inlo, inlo_z);
	arc4(xecc, xecc_z);
	arc4(lsto, lsto_z);
	arc4(tst1, tst1_z);
	 key(tst1, tst1_z);
	arc4(chk1, chk1_z);
	if ((chk1_z != tst1_z) || memcmp(tst1, chk1, tst1_z))
		return tst1;
	arc4(msg2, msg2_z);
	if (ret < 0)
		return msg2;
	varg = (char **)calloc(argc + 10, sizeof(char *));
	if (!varg)
		return 0;
	if (ret) {
		arc4(rlax, rlax_z);
		if (!rlax[0] && key_with_file(shll))
			return shll;
		arc4(opts, opts_z);
#if HARDENING
	    arc4_hardrun(text, text_z);
	    exit(0);
       /* Seccomp Sandboxing - Start */
       seccomp_hardening();
#endif
		arc4(text, text_z);
		arc4(tst2, tst2_z);
		 key(tst2, tst2_z);
		arc4(chk2, chk2_z);
		if ((chk2_z != tst2_z) || memcmp(tst2, chk2, tst2_z))
			return tst2;
		/* Prepend hide_z spaces to script text to hide it. */
		scrpt = malloc(hide_z + text_z);
		if (!scrpt)
			return 0;
		memset(scrpt, (int) ' ', hide_z);
		memcpy(&scrpt[hide_z], text, text_z);
	} else {			/* Reexecute */
		if (*xecc) {
			scrpt = malloc(512);
			if (!scrpt)
				return 0;
			sprintf(scrpt, xecc, me);
		} else {
			scrpt = me;
		}
	}
	j = 0;
#if BUSYBOXON
	varg[j++] = "busybox";
	varg[j++] = "sh";
#else
	varg[j++] = argv[0];		/* My own name at execution */
#endif
	if (ret && *opts)
		varg[j++] = opts;	/* Options on 1st line of code */
	if (*inlo)
		varg[j++] = inlo;	/* Option introducing inline code */
	varg[j++] = scrpt;		/* The script itself */
	if (*lsto)
		varg[j++] = lsto;	/* Option meaning last option */
	i = (ret > 1) ? ret : 0;	/* Args numbering correction */
	while (i < argc)
		varg[j++] = argv[i++];	/* Main run-time arguments */
	varg[j] = 0;			/* NULL terminated array */
#if DEBUGEXEC
	debugexec(shll, j, varg);
#endif
	execvp(shll, varg);
	return shll;
}

int main(int argc, char ** argv)
{
#if SETUID
   setuid(0);
#endif
#if DEBUGEXEC
	debugexec("main", argc, argv);
#endif
#if HARDENING
	hardening();
#endif
#if !TRACEABLE
	untraceable(argv[0]);
#endif
	argv[1] = xsh(argc, argv);
	fprintf(stderr, "%s%s%s: %s\n", argv[0],
		errno ? ": " : "",
		errno ? strerror(errno) : "",
		argv[1] ? argv[1] : "<null>"
	);
	return 1;
}
